package com.mdd.product.service;



import com.mdd.product.validate.ProductSkuCreateValidate;
import com.mdd.product.validate.ProductSkuUpdateValidate;
import com.mdd.product.vo.CreateSkulVo;
import com.mdd.product.vo.ProductPropertyDetailVo;
import com.mdd.product.vo.ProductSkuListedVo;
import java.util.List;
import java.util.Set;

/**
 * 商品sku服务接口类
 * @author LikeAdmin
 */
public interface IProductSkuService {

    /**
     * 商品sku列表
     *
     * @author LikeAdmin
     * @return PageResult<ProductSkuListedVo>
     */
    List<ProductSkuListedVo> list(Long  spuId);

    /***
     * 根据属性列表生成SKU列表
     * @param list
     * @return
     */
    List<ProductSkuListedVo> createSkuOld(List<ProductPropertyDetailVo> list);
    List<ProductSkuListedVo> createSku(CreateSkulVo createSkulVo);

    /**
     * 商品sku新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(ProductSkuCreateValidate createValidate);

    /**
     * 商品sku编辑
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(ProductSkuUpdateValidate updateValidate);

    /**
     * 商品sku删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Long id);

    /**
     * 根据商品删除sku属性
     * @param spuId
     */
    void delSpu(Long spuId);

    void delSkuBySpuIdAndSku(Long  spuId, Set<Long> existSkuId);
}
